package GUI;

import java.util.Date;
import java.util.Scanner;

import org.hibernate.HibernateException;

import ClassesBasicas.Atendente;
import ClassesBasicas.Endereco;
import ClassesBasicas.ITipoPessoa;
import Excecao.PessoaExistenteException;
import Excecao.PessoaInexistenteException;
import Negocio.Fachada;

public class MenuCadastroAtendente implements ITipoPessoa {
	public static void telaAtendente() throws PessoaInexistenteException{

		Scanner opcao = new Scanner(System.in);
		int op;
		do {
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("");
			System.out.println("                                                              MENU CADASTRO ATENDENTE");
			System.out.println("");
			System.out.println("                                                      Inserir..................................1");
			System.out.println("                                                      Remover..................................2");
			System.out.println("                                                      Consultar................................3");
			System.out.println("                                                      Alterar..................................4");
			System.out.println("                                                      Voltar...................................0");
			System.out.println("");
			System.out.println("");
			System.out.print("                                                     > Selecione sua opcao:");
			op = opcao.nextInt();
			if (op ==1){
				inserirAtendente();
			}else if (op == 2){
				excluirAtendente();
			}else if (op ==3){
				consultarAtendente();
			}else if (op ==4){
				atualizarAtendente();
			}else{
				System.out.println("                                                   Opcao Invalida! Favor Digitar Novamente.");
			}
		}while (op!=0);
	}

	@SuppressWarnings("deprecation")
	public static void inserirAtendente(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      INSERIR");
		System.out.println("");
		System.out.print("                                                            Nome:");
		String nome = opcao.nextLine();
		System.out.print("                                                            CPF:");
		String cpf = opcao.nextLine();
		System.out.print("                                                            Data Nascimento:");
		String dataNascimento = opcao.nextLine();
		System.out.print("                                                            Sexo:");
		String sexo = opcao.nextLine();
		System.out.print("                                                            Logradouro:");
		String logradouro = opcao.nextLine();
		System.out.print("                                                            Bairro:");
		String bairro = opcao.nextLine();
		System.out.print("                                                            Numero:");
		String numero = opcao.nextLine();
		System.out.print("                                                            CEP:");
		String cep = opcao.nextLine();
		System.out.print("                                                            Cidade:");
		String cidade = opcao.nextLine();
		System.out.print("                                                            Ponto de Referencia:");
		String pontoReferencia = opcao.nextLine();
		System.out.print("                                                            Guiche:");
		int guiche = opcao.nextInt();

		int dia = Integer.parseInt(dataNascimento.substring(0,2));
		int mes = Integer.parseInt(dataNascimento.substring(2,4));
		int ano = Integer.parseInt(dataNascimento.substring(4,8));
		
		Date date = new Date();
		
		date.setDate(dia);  
		date.setMonth(mes);
		date.setYear(ano);
		
		Endereco endereco = new Endereco(logradouro, Integer.parseInt(numero), bairro, cep, cidade,  pontoReferencia);
		Atendente atendente = new Atendente();
		
		atendente.setNome(nome);
		atendente.setCpf(cpf);
		atendente.setDataNascimento(date);
		atendente.setSexo(sexo.charAt(0));
		atendente.setEndereco(endereco);
		atendente.setGuiche(guiche);
		
		 

		
		try {
			Fachada.obterInstancia().cadastrar(atendente, ATENDENTE);
			System.out.println("Atendente inserido com sucesso !");
		} catch (PessoaExistenteException e) {
			System.err.println(e.getMessage());					
		}catch(HibernateException e){
			System.err.println(e.getMessage());
		}
		
	}

	public static void excluirAtendente() throws PessoaInexistenteException{
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                        EXCLUIR");
		System.out.print("");
		System.out.println("                                                            Digite o codigo referente:");
		String mat = opcao.nextLine();
		Fachada f1 = Fachada.obterInstancia();
		try {
			f1.remover(mat, ATENDENTE);
			System.out.println("Atendente removido com sucesso!");
		} catch(PessoaInexistenteException ex){
			System.err.println(ex);
		}
	}


	public static void consultarAtendente(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                     CONSULTAR");
		System.out.println("");
		System.out.print("                                                            Digite o codigo referente:");
		String cod = opcao.nextLine();

		try {
			Atendente atendente = (Atendente) Fachada.obterInstancia().procurar(cod, ATENDENTE);

			System.out.print("                                                            Nome:");
			System.out.println(atendente.getNome());
			System.out.print("                                                            CPF:");
			System.out.println(atendente.getCpf());
			System.out.print("                                                            Data Nascimento:");
			System.out.println(atendente.getDataNascimento());
			System.out.print("                                                            Codigo:");
			System.out.println(atendente.getCodigo());
			System.out.print("                                                            Sexo:");
			System.out.println(atendente.getSexo());
			System.out.print("                                                            Matricula:");
			System.out.println(atendente.getMatricula());
			System.out.print("                                                            Logradouro:");
			System.out.print(atendente.getEndereco().getLogradouro());
		} catch (PessoaInexistenteException e) {
			System.err.println(e);
		}
	}

	@SuppressWarnings("deprecation")
	public static void atualizarAtendente(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      ALTERAR");
		System.out.println("");
		System.out.print("                                                            Nome:");
		String nome = opcao.nextLine();
		System.out.print("                                                            CPF:");
		String cpf = opcao.nextLine();
		System.out.print("                                                            Data Nascimento:");
		String dataNascimento = opcao.nextLine();
		System.out.print("                                                            Sexo:");
		String sexo = opcao.nextLine();
		System.out.print("                                                            Logradouro:");
		String logradouro = opcao.nextLine();
		System.out.print("                                                            Bairro:");
		String bairro = opcao.nextLine();
		System.out.print("                                                            Numero:");
		String numero = opcao.nextLine();
		System.out.print("                                                            CEP:");
		String cep = opcao.nextLine();
		System.out.print("                                                            Cidade:");
		String cidade = opcao.nextLine();
		System.out.print("                                                            Ponto de Referencia:");
		String pontoReferencia = opcao.nextLine();
		System.out.print("                                                            Guiche:");
		int guiche = opcao.nextInt();

		Date date = new Date(dataNascimento);
		Endereco endereco = new Endereco(logradouro, Integer.parseInt(numero), bairro, cep, cidade,  pontoReferencia);
		Atendente atendente = new Atendente();
		
		atendente.setNome(nome);
		atendente.setCpf(cpf);
		atendente.setDataNascimento(date);
		atendente.setSexo(sexo.charAt(0));
		atendente.setEndereco(endereco);
		atendente.setGuiche(guiche);		
		
		try {

			Fachada.obterInstancia().atualizar(atendente, ATENDENTE);
			System.out.println("Atendente Inserido com Sucesso!");

		}catch (PessoaInexistenteException ex) {
			System.err.println(ex);
		}
	}
}

